﻿using Microsoft.AspNetCore.Mvc;
using Nasty.Core.LoadParams;
using Nasty.Core.Registry;
using Nasty.SystemModule.Areas.UserMessage.Model;
using Nasty.SystemModule.Areas.UserMessage.Params;
using NetTaste;

namespace Nasty.SystemModule.UserMessage
{
	public interface IUserMessageService : IAutofacRegister
	{
		public Nasty.Core.Entity.System.UserMessage GetUserMessage(string id);

		public List<Nasty.Core.Entity.System.UserMessage> GetUserMessages(GetUserMessagesParams @params);

		public ResultData<int> GetUserMessageCount(GetUserMessageCountParams @params);

		public ResultData<string> SetAllUserMessageRead(SetAllUserMessageReadParams @params);

        public ResultData<Nasty.Core.Entity.System.UserMessage> SaveUserMessage(UserMessageModel model);

		public ResultData<string> DeleteUserMessages(List<string> ids);

        public PageData<Nasty.Core.Entity.System.UserMessage> GetUserMessagePage(GetUserMessagePageParams @params);
    }

	public class UserMessageService : IUserMessageService
	{
		public required IUserMessageRepository UserMessageRepository { get; set; }

		public ResultData<string> DeleteUserMessages(List<string> ids)
		{
			return UserMessageRepository.DeleteUserMessages(ids);
		}

		public Nasty.Core.Entity.System.UserMessage GetUserMessage(string id)
		{
			return UserMessageRepository.GetUserMessage(id);
		}

     
        public PageData<Nasty.Core.Entity.System.UserMessage> GetUserMessagePage(GetUserMessagePageParams @params)
        {
            return UserMessageRepository.GetUserMessagePage(@params);
        }

        public ResultData<Nasty.Core.Entity.System.UserMessage> SaveUserMessage(UserMessageModel model)
		{
			return UserMessageRepository.SaveUserMessage(model);
		}

        public List<Nasty.Core.Entity.System.UserMessage> GetUserMessages(GetUserMessagesParams @params)
        {
            return UserMessageRepository.GetUserMessages(@params);
        }

        public ResultData<int> GetUserMessageCount(GetUserMessageCountParams @params)
        {
            return UserMessageRepository.GetUserMessageCount(@params);
        }

        public ResultData<string> SetAllUserMessageRead(SetAllUserMessageReadParams @params)
        {
            return UserMessageRepository.SetAllUserMessageRead(@params);
        }
    }
}
